home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / cuteftp_flaws.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  133 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4.  
  5.  
  6. if(description)
  7. {
  8.  script_id(11756);
  9.  script_bugtraq_id(6642, 6786);
  10.  
  11.  script_version("$Revision: 1.5 $");
  12.  
  13.  name["english"] = "CuteFTP multiple flaws";
  14.  
  15.  script_name(english:name["english"]);
  16.  
  17.  desc["english"] = "
  18. The remote host has the program CuteFTP.exe installed.
  19.  
  20. CuteFTP is a FTP client which contains two overflow conditions
  21. which may be exploited by an attacker to gain a shell on this
  22. host.
  23.  
  24. To exploit these vulnerabilities, an attacker would need to set
  25. up a rogue FTP server and lure a user of this host to browse it
  26. using CuteFTP.
  27.  
  28. Solution : Upgrade to CuteFTP 5.0.2.0 or newer
  29. Risk factor : High";
  30.  
  31.  
  32.  
  33.  script_description(english:desc["english"]);
  34.  
  35.  summary["english"] = "Determines the presence of CuteFTP.exe";
  36.  
  37.  script_summary(english:summary["english"]);
  38.  
  39.  script_category(ACT_GATHER_INFO);
  40.  
  41.  script_copyright(english:"This script is Copyright (C) 2003 Tenable Network Security");
  42.  family["english"] = "Windows";
  43.  script_family(english:family["english"]);
  44.  
  45.  script_dependencies("netbios_name_get.nasl",
  46.               "smb_login.nasl","smb_registry_access.nasl");
  47.  script_require_keys("SMB/name", "SMB/login", "SMB/password",
  48.              "SMB/WindowsVersion",
  49.              "SMB/registry_access");
  50.  
  51.  script_require_ports(139, 445);
  52.  exit(0);
  53. }
  54.  
  55.  
  56. include("smb_nt.inc");
  57.  
  58.  
  59.  
  60. rootfile = registry_get_sz(key:"SOFTWARE\GlobalScape Inc.\CuteFTP", item:"CmdLine");
  61. if(!rootfile)
  62. {
  63.  exit(0);
  64. }
  65. else
  66. {
  67.  share = ereg_replace(pattern:"([A-Z]):.*", replace:"\1$", string:rootfile);
  68.  exe =  ereg_replace(pattern:"[A-Z]:(.*)", replace:"\1", string:rootfile);
  69.  }
  70.  
  71.  
  72.  
  73.  
  74.  
  75. name     =  kb_smb_name();
  76. login    =  kb_smb_login();
  77. pass      =  kb_smb_password();
  78. domain     =  kb_smb_domain();
  79. port    =  kb_smb_transport();
  80. if(!port) port = 139;
  81.  
  82.  
  83. if(!get_port_state(port))exit(0);
  84.  
  85. soc = open_sock_tcp(port);
  86. if(!soc)exit(0);
  87.  
  88.  
  89.  
  90. r = smb_session_request(soc:soc, remote:name);
  91. if(!r)exit(0);
  92.  
  93. prot = smb_neg_prot(soc:soc);
  94. if(!prot)exit(0);
  95.  
  96. r = smb_session_setup(soc:soc, login:login, password:pass, domain:domain, prot:prot);
  97. if(!r)exit(0);
  98.  
  99. uid = session_extract_uid(reply:r);
  100.  
  101.  
  102.  
  103. r = smb_tconx(soc:soc, name:name, uid:uid, share:share);
  104. tid = tconx_extract_tid(reply:r);
  105. if(!tid)exit(0);
  106.  
  107. fid = OpenAndX(socket:soc, uid:uid, tid:tid, file:exe);
  108. if(fid != 0)
  109. {
  110.  fsize = smb_get_file_size(socket:soc, uid:uid, tid:tid, fid:fid);
  111.  off = fsize - 176128;
  112.  data = ReadAndX(socket:soc, uid:uid, tid:tid, fid:fid, count:16384, off:off);
  113.  data = str_replace(find:raw_string(0), replace:"", string:data);
  114.  version = strstr(data, "ProductVersion");
  115.  
  116.  if(!version)exit(0);
  117.  
  118.  for(i=strlen("ProductVersion");i<strlen(version);i++)
  119.  {
  120.  if((ord(version[i]) < ord("0") ||
  121.     ord(version[i]) > ord("9")) && 
  122.     version[i] != ".")break;
  123.  else 
  124.    v += version[i];
  125.  
  126.  set_kb_item(name:"SMB/Windows/Products/CuteFTP/Version", value:v);
  127.  if(ereg(pattern:"^([0-4]\.|5\.0\.[01]\.)", string:v))
  128.  {
  129.   security_hole(port);
  130.  }
  131. }
  132.